

What is MIDI?


Musical Instrument Digital Interface (MIDI) is a type of control information used with synthesizers. Lets explain this with an analogy: Your computer can send messages to a printer about how you want a page to look. The printer then takes care of converting this information to the actual ink on paper. With MIDI the synthesizer works much like a musical printer: the computer sends information to it, specifying which notes you want it to play, and it takes care of actually creating the audio. One of the advantages of this technique is that a recording made with for example a piano sound can be played back with a harpsichord, brass or guitar sound, just by changing settings on the synthesizer. General MIDI (abbreviated GM) is an additional specification for MIDI instruments. If an instrument or sound card is General MIDI compatible, it will have a common, wide ranging set of sounds built in (piano, bass, drums, brass, strings etc). If you create music with a General MIDI compatible instrument it can be played back on any other GM instrument and the music will sound more or less the same. 



What is GM/GS/XG?

General MIDI (GM)
The General MIDI System is a universal set of specifications for sound generating devices. These specifications seek to allow for the creation of music files which is not limited to equipment by a particular manufacturer or to specific models. The General MIDI System defines things such as the minimum number of voices that should be supported, the MIDI messages that should be recognized, which sounds correspond to which Program Change numbers, and the layout of rhythm sounds on the keyboard. Thanks to these specifications, any device that is equipped with sound sources supporting the General MIDI System will be able to accurately reproduce General MIDI Scores (music files created for the General MIDI System), regardless of the manufacturer or model.

Roland GS
This is a variation of General MIDI introduced by Roland. It defines additional standard procedures for selecting alternate drum kits and sound variations, and for setting a number of other parameters in Roland GS compatible instruments.

Yamaha XG
This is a variation of General MIDI introduced by Yamaha. It defines additional standard procedures for selecting alternate drum kits and for setting a number of other parameters in Yamaha XG compatible instruments.



MIDI Events

MIDI is a serial interface, i.e. all events are transferred after each other. Every event consists of at least one status byte telling us what type of event it is. Some events have an extra data byte, some have two extra data bytes and system exclusive has any number of data bytes.

Since data transferral is serial, when you hit a chord on your keyboard, it is in fact an extremely fast arpeggio. This is also the way a computer works. A computer can only do one thing at any given moment but it does it extremely fast, so to us it seems as if many things are happening simultaneously.
 
All the following events have a status byte. This tells us what type of event it is and what channel number it has. The channel number is between 1 and 16 and a synthesiser can "listen" to one of those channels (Omni Mode Off) or all channels (Omni Mode On).

Note On Events
These have two data bytes. The first data byte is the note number, the second data byte says how hard (fast) it was struck (velocity value).

Note Off Events
These have two data bytes. The first data byte is the note number, the second says how fast the key was released. Note On with a velocity of zero is also interpreted as Note Off.

Program Change Events
These have one data byte. The data byte holds the program number.

Pitch Wheel Events
These have two data bytes where the first one is seldom used and can be disregarded but the second byte holds value between 0 and 127. No bend is 64, maximum downward bend is 0 and maximum upward bend is 127.

Channel Aftertouch Events
These have one data byte for the amount.

Poly Aftertouch Events
These have two data bytes, one for the note number and one for the amount. If your keyboard sends aftertouch, check if the sound you use responds to it. If not, it is advisable not to record them, i.e. filter them out (use the Input Filter in Overall Settings).

Controller Events
These have two data bytes. The first indicates the control number, the second its value.

System Exclusive Events
These have any number of data bytes and end with a special status byte called EOX (End Of Exclusive).

Text Events
These are not actually MIDI events but may appear in MIDI files. They can have any number of data bytes.

Lyric Events
These are not actually MIDI events but may appear in MIDI files. They can have any number of data bytes.


